#include #define SIZE 7 void displaySubset(int subSet[], int size) { for(int i = 0; i < size; i++) { printf("%d ", subSet[i]); } printf("\n"); } void subsetSum(int set[], int subSet[], int n, int subSize, int total, int nodeCount ,int sum) { if( total == sum) { displaySubset(subSet, subSize); if (subSize != 0) subsetSum(set,subSet,n,subSize-2,total-set[nodeCount],nodeCount+1,sum); return; }else { for( int i = nodeCount; i < n; i++ ) { subSet[subSize] = set[i]; subsetSum(set,subSet,n,subSize+1,total+set[i],i+1,sum); } } } void findSubset(int set[], int size, int sum) { int subSet[size]; subsetSum(set, subSet, size, 0, 0, 0, sum); } int main() { int weights[] = {1, 9, 7, 5, 18, 12, 20, 15}; int size = SIZE; findSubset(weights, size, 35); return 0; } Output: 1 9 7 18 1 9 5 20 5 18 12